using System;
using UnityEngine;

/// <summary>
/// 智能床数据结构类，用于映射接收到的JSON数据
/// </summary>
[Serializable]
public class SmartBedData
    {
        public string time;          // 时间戳
        public string side;          // 侧面 (left/right)
        public string pressure;      // 压力数据字符串
        public string posture;       // 姿势状态
        public string airbag_status; // 气囊状态
        public string avg_pressure;  // 平均压力
        public string PI;            // 压力指数
        public string com_level;     // 舒适度等级
        public string PAI;           // 压力面积指数数组
        public string PL;            // 压力等级数组
        public string airbag_time;   // 气囊时间数组
        public string data_status;   // 数据状态

        // 解析后的数据
        [NonSerialized]
        public int[] pressureArray;
        
        [NonSerialized]
        public float[] paiArray;
        
        [NonSerialized]
        public int[] plArray;
        
        [NonSerialized]
        public int[] airbagTimeArray;

        /// <summary>
        /// 解析字符串数据为数组
        /// </summary>
        public void ParseData()
        {
            // 解析压力数据
            pressureArray = ParseIntArray(pressure);
            
            // 解析PAI数组
            paiArray = ParseFloatArray(PAI);
            
            // 解析PL数组
            plArray = ParseIntArray(PL);
            
            // 解析气囊时间数组
            airbagTimeArray = ParseIntArray(airbag_time);
        }

        /// <summary>
        /// 解析整型数组字符串
        /// </summary>
        private int[] ParseIntArray(string arrayString)
        {
            if (string.IsNullOrEmpty(arrayString))
                return new int[0];

            try
            {
                // 移除方括号
                string content = arrayString.Trim('[', ']');
                
                // 分割字符串
                string[] elements = content.Split(new[] { ", " }, StringSplitOptions.None);
                
                // 转换为整型数组
                int[] result = new int[elements.Length];
                for (int i = 0; i < elements.Length; i++)
                {
                    if (int.TryParse(elements[i], out int value))
                    {
                        result[i] = value;
                    }
                    else
                    {
                        result[i] = 0;
                    }
                }
                
                return result;
            }
            catch (Exception e)
            {
                Debug.LogWarning($"解析整型数组失败: {e.Message}");
                return new int[0];
            }
        }

        /// <summary>
        /// 解析浮点型数组字符串
        /// </summary>
        private float[] ParseFloatArray(string arrayString)
        {
            if (string.IsNullOrEmpty(arrayString))
                return new float[0];

            try
            {
                // 移除方括号
                string content = arrayString.Trim('[', ']');
                
                // 分割字符串
                string[] elements = content.Split(new[] { ", " }, StringSplitOptions.None);
                
                // 转换为浮点型数组
                float[] result = new float[elements.Length];
                for (int i = 0; i < elements.Length; i++)
                {
                    if (float.TryParse(elements[i], out float value))
                    {
                        result[i] = value;
                    }
                    else
                    {
                        result[i] = 0f;
                    }
                }
                
                return result;
            }
            catch (Exception e)
            {
                Debug.LogWarning($"解析浮点型数组失败: {e.Message}");
                return new float[0];
            }
        }
}